ssize_t rio_writen(int fd,void *usrbuf,size_t n)

{

size_t nleft=n;

ssize_t nwritten;

char *bufp=usrbuf;



while(nleft>0){

if((nwritten=write(fd,bufp,nleft))<=0){

if(errno==EINTR)

nwritten=0;

else

return -1;

}

nleft-=nwritten;

bufp+=nwritten;

}

return n;

}

